import java.util.*;
/**
 * Write a description of class AfdelingMenu here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class AfdelingMenu
{
    private MenuKiezer menu;
    private Supermarkt supermarkt;
    private Klant klant;
    private Afdeling afdeling;
    private TuiHelper tuiHelper;
    private ArrayList<Product> volleproducten;
    private Product product;

     /**
     * Constructor for objects of class AfdelingMenu
     */
    public AfdelingMenu(Afdeling afdeling, Supermarkt supermarkt, Klant klant)
    {
        this.supermarkt = supermarkt;
        this.klant = klant;
        this.afdeling = afdeling;
        toonProductAfdelingMenu();
    }

    public void toonProductAfdelingMenu( ) {
        menu = new MenuKiezer( "Welk product wilt u?", "maak een keuze" );
        toonProductAfdelingen();
        menu.addStopItem("terug");
    }
    
    public void toonProductAfdelingen( ){
        ArrayList<Product> producten = new ArrayList<Product>();
        producten = afdeling.vraagProductenOp();
        ArrayList<String> productnamen = new ArrayList<String>();
        volleproducten = new ArrayList<Product>();
        boolean leeg = false;
        if (producten.size() != 0 ) {
            for(int i = 0; i < producten.size(); i++){
                Product p = producten.get(i);
                if(p.getVoorraadAfdeling() > 0){
                    volleproducten.add(p);
                }
            }   
                
            for (Product product : volleproducten){
                if( !productnamen.contains( product.getNaam() ) ){
                    if(product.getVoorraadAfdeling() > 0){
                        menu.addItem(product.toString(0));
                        productnamen.add( product.getNaam() );
                    }
                }
            }
        }
    }
    
    public void toonProductSuggesties(){
         if( !klant.getNaam().equalsIgnoreCase("anoniem") ){
        ArrayList<Product> producten = new ArrayList<Product>();
        producten = afdeling.vraagProductenOp();
        ArrayList<String> productnamen = new ArrayList<String>();
        volleproducten = new ArrayList<Product>();
        boolean leeg = false;
        int t = 1;
        TuiHelper.clear();
        if (producten.size() != 0 ) {
            for(int i = 0; i < producten.size(); i++){
                Product p = producten.get(i);
                if(p.getVoorraadAfdeling() > 0){
                    if( p.korting() ){
                        volleproducten.add(p);
                    }
                    else{
                        System.out.println("Er zijn geen suggesties");
                        tuiHelper.drukafDrukEnterEnWachtOpEnter();
                        break;
                    }
                }
            }       
            for (Product product : volleproducten){
                if( !productnamen.contains( product.getNaam() ) ){
                    if(product.getVoorraadAfdeling() > 0){                                  
                        System.out.println( t + ". " + product.toString(0)) ;  
                        t++;           
                        int keuze = tuiHelper.stelVraagMetGetalAntwoord( "Vul het nummer van het product in om het te kiezen \n druk '0' om terug te keren" );     
                        if( keuze== 0 ){   
                            TuiHelper.clear();
                            break;           
                        }
                        int aantal = tuiHelper.stelVraagMetGetalAntwoord( "Hoeveel wilt u er?" );
                        klant.addWinkelwagenProduct(volleproducten.get(keuze-1));
                        supermarkt.minVoorraadAfdeling(product, aantal, product.getHoudbaarheidsDatum());
                        supermarkt.plusAantal(product, aantal);
                        tuiHelper.drukafDrukEnterEnWachtOpEnter();
                    }
                }
            }   
        }
        }
         else{
             TuiHelper.clear();
             System.out.println("U bent nog geen vaste klant log in als vaste klant om hier gebruik van te maken");
             tuiHelper.drukafDrukEnterEnWachtOpEnter();
         }
    }

     
    public void toonProductenMenu() {
        int keuze = -1;
        TuiHelper.clear();
        while ( keuze != 0 ) {
            keuze = menu.getMenukeuze();
            TuiHelper.clear();
                if ( keuze <=  volleproducten.size() && keuze > 0 ){
                    Product product = (Product)volleproducten.get(keuze-1);
                    System.out.println("U heeft voor het product: " + product.getNaam() + " gekozen." );
                    System.out.println("Er zijn er nog " + product.getVoorraadAfdeling() + " in het schap.");
                    int aantal = tuiHelper.stelVraagMetGetalAntwoord( "Hoeveel wilt u er ?" );
                    if( aantal > product.getVoorraadAfdeling() ){
                        System.out.println( "Er zijn maar: " + product.getVoorraadAfdeling() + " producten" );
                    }
                    else{
                        String naam = product.getNaam();
                        if(!klant.zitProductAlInWinkelwagen( naam )){
                            klant.addWinkelwagen(product.getNaam() );
                            product.addAantalWinkelwagen(aantal);
                        }
                        else{
                            product.minVoorraadAfdeling(aantal, product.getHoudbaarheidsDatum() );
                            product.plusAantal(product.getHoudbaarheidsDatum(), aantal);
                        }
                        System.out.println("gelukt");
                        break;
                    }
                    tuiHelper.drukafDrukEnterEnWachtOpEnter();
                }else{
                    System.out.println("Ongeldige keuze");
                }
        }
        TuiHelper.clear();
    }
    
    
}

